﻿/*************************************************
  * 描述：不同码类型的测试，测试结果主要生成图片
  *
  * File：corexi-common-pc
  * Author：gaomaolong@mozihealthcare.cn
  * Date：2025-09-23
  * Update：
  * ************************************************/
#ifndef CODEGENERATORTEST_H
#define CODEGENERATORTEST_H


#include <QtTest/QtTest>
#include <common/codeimagegenerate/codeimagegenerator.h>

class CodeGeneratorTest final : public QObject
{
	Q_OBJECT
public:
	CodeGeneratorTest(QObject* parent = 0);
	~CodeGeneratorTest();

private slots:

	void initTestCase();
	// 测试1：默认效果（静态方法），测试结果保存在 ./debug/bin/testCode/
	void testDefaultStaticMethods();

	// 测试2：指定尺寸（对象成员函数）
	void testSpecifiedSizeMemberFunc();

	// 测试3：二维码带图标+容错级别
	void testQRWithIconAndErrorLevel();

	// 测试4：全自定义配置+配置复用
	void testFullCustomConfigAndReuse();

	// 测试5：无效数据校验
	void testInvalidData();

	void cleanUpTestcase();

private:
	/**
	 * 辅助函数，创建目录
	 * @param dirPath 目录路径
	 * @return 成功与否
	 */
	bool createTestDir(const QString& dirPath);

	/**
	 * 检验图片是否有效，保存图片到路径
	 * @param image 要检验image对象
	 * @param savePath 保存路径
	 * @return 成功与否
	 */
	bool verifyImageValid(const QImage& image, const QString& savePath);

	/**
	 * 辅助函数，将码枚举类型转换为字符串，便于拼接保存路径
	 * @param type 码枚举类型
	 * @return 字符串
	 */
	QString barcodeTypeToString(BarcodeType type);


private:
	QString m_rootDir;             // 测试根目录（build/debug/bin/testCode/）
};


#endif//CODEGENERATORTEST_H
